Visualization and analysis of scheduling data

ABSTRACT

Methods and structure for presenting and analyzing schedule data. One exemplary embodiment is a system that includes an interface and a controller. The controller is able to identify a schedule comprising multiple events occurring over a length of time, to select a cyclic period within the length of time, and to generate a representation of the length of time as a view of a three dimensional (3D) helix wherein each revolution of the 3D helix corresponds with an iteration of the cyclic period. The controller is also able to determine an event location for each of the events along a path defined by the 3D helix, and to direct the interface to transmit instructions for presenting the 3D helix and the event locations via a display.

CROSS REFERENCE TO RELATED APPLICATIONS

This document claims priority to, and thus the benefit of an earlierfiling date from, U.S. patent application Ser. No. 14/684,078, filed onApr. 10, 2015, and titled “VISUALIZATION AND ANALYSIS OF SCHEDULINGDATA,” which is hereby incorporated by reference. U.S. patentapplication Ser. No. 14/684,078 claims priority to U.S. ProvisionalPatent Application No. 61/978,974, filed on Apr. 13, 2014, and titled“TIME OPTIMIZATION SYSTEM,” which is hereby incorporated by reference.

FIELD OF THE INVENTION

The invention relates generally to scheduling and analyzing schedules ofactivities.

BACKGROUND

Scheduling systems such as calendars are used for a variety of purposesin order to track how time is spent and to reserve time for futureevents. For example, a calendar is a system by which a user maytranscribe a list of their future activities in order to ensure thatthose activities are not missed and do not conflict with other futureactivities. Users continue to desire advances in scheduling technologyin order to enhance their lives.

SUMMARY

Systems and methods herein provide for creating and analyzing a scheduleof events. For example, the embodiments discussed herein may represent aschedule of events along the path of a three dimensional (3D) helixpresented to a user, and/or provide recommendations for changing futurebehavior based on the schedule of events.

One exemplary embodiment described herein is a system that includes aninterface and a controller. The controller is able to identify aschedule comprising multiple events occurring over a length of time, toselect a cyclic period within the length of time, and to generate arepresentation of the length of time as a view of a three dimensional(3D) helix wherein each revolution of the 3D helix corresponds with aniteration of the cyclic period. The controller is also able to determinean event location for each of the events along a path defined by the 3Dhelix, and to direct the interface to transmit instructions forpresenting the 3D helix and the event locations via a display.

A further exemplary embodiment comprises a system that includes arecommendation controller and a memory. The recommendation controller isable to detect a schedule comprising multiple events occurring over alength of time, and to recursively: identify an event for rescheduling,identify a new time or location for the identified event based oncriteria stored in the memory, determine whether the new time causes theevent to conflict with an event that has a higher priority than theidentified event, and reschedule the identified event to the new time orlocation if the new time or location does not cause the identified eventto conflict with a higher priority event.

Other exemplary embodiments (e.g., methods and computer readable mediarelating to the foregoing embodiments) are also described below.

BRIEF DESCRIPTION OF THE FIGURES

Some embodiments of the present invention are now described, by way ofexample only, and with reference to the accompanying figures. The samereference number represents the same element or the same type of elementon all figures.

FIG. 1 is a block diagram of an exemplary scheduling system.

FIG. 2 is a flowchart describing an exemplary method to operate ascheduling system.

FIG. 3 is a diagram illustrating an exemplary helical representation ofa schedule of events.

FIGS. 4A-D are diagrams illustrating an exemplary nested helicalrepresentation of a schedule of events.

FIG. 5 is a diagram illustrating an exemplary helical arrangement ofplanar images.

FIG. 6 is a diagram illustrating exemplary cross-sectional views of onerevolution of a helical representation of a schedule of events.

FIG. 7 is a table illustrating exemplary data stored for a schedule ofevents.

FIG. 8 is a diagram illustrating an exemplary set of layers for aschedule of events.

FIG. 9 is a diagram illustrating a further exemplary set of layers for aschedule of events.

FIG. 10 is a diagram illustrating an exemplary linearized length of ahelix representing a schedule of events.

FIG. 11 is a diagram illustrating an exemplary helical representation ofa schedule of events exhibiting a variable pitch.

FIG. 12 is a diagram illustrating an exemplary rescheduling of eventsbased on a location of a user.

FIG. 13 is a flowchart illustrating an exemplary method for reschedulingevents based on a location of a user.

FIG. 14 is a diagram illustrating an exemplary set of behavioralpatterns compared against a user's schedule.

FIG. 15 is a flowchart illustrating an exemplary method for correlatinga user's schedule with a behavioral pattern.

FIG. 16 illustrates an exemplary processing system operable to executeprogrammed instructions embodied on a computer readable medium.

DETAILED DESCRIPTION OF THE FIGURES

The figures and the following description illustrate specific exemplaryembodiments of the invention. It will thus be appreciated that thoseskilled in the art will be able to devise various arrangements that,although not explicitly described or shown herein, embody the principlesof the invention and are included within the scope of the invention.Furthermore, any examples described herein are intended to aid inunderstanding the principles of the invention, and are to be construedas being without limitation to such specifically recited examples andconditions. As a result, the invention is not limited to the specificembodiments or examples described below, but by the claims and theirequivalents.

FIG. 1 is a block diagram 100 of an exemplary scheduling system 110. Inthis embodiment, scheduling system 110 is operable to access a database140 storing a schedule of events, and to illustrate the schedule ofevents as a three dimensional (3D) helix via a display 130. The cyclicnature of the helix allows for a user to quickly identifycyclic/repetitive and/or time consuming patterns of behavior within theschedule, and/or other information about how she has been spending hertime. This may also enable a user to engage in decision making processesto update or change their future schedule, based on the informationprovided by the helix.

As shown in FIG. 1, scheduling system 110 includes visualizationcontroller 120, which manages the overall operations of schedulingsystem 110, and controls one or more interfaces (e.g., I/F 114, I/F 116,I/F 118) in order to control the operations of various coupled devices.Specifically, visualization controller 120 accesses schedulinginformation from database 140 (e.g., a remotely hosted databaseaccessible via the Internet, or in one embodiment a local databasestored in memory 112) in order to determine which events to present onthe 3D helix, as well as where to place those events on the 3D helix.

Visualization controller 120 accesses visualization memory 112 in orderto generate, update and/or modify views of the 3D helix. Visualizationcontroller 120 may be implemented as custom circuitry, a processorexecuting programmed instructions stored in program memory, or somecombination thereof. In one embodiment, visualization controller 120 maybe automatically altered based on software updates provided via abackend interface of a central server via the Internet. This ensuresthat updates can be pushed to multiple scheduling systems (e.g.,millions of apps) without extensive investments of developer or usertime.

Interfaces 114, 116, and 118 may comprise any suitable communicationchannels for exchanging data, such as a computer bus, a PeripheralComponent Interconnect Express (PCIE) interface, an Ethernet interface,an Institute of Electrical and Electronics Engineers (IEEE) 802.11compliant wireless interface, etc. Visualization memory 112 may compriseany suitable memory component for storing digital data, such as a RandomAccess Memory (RAM) or a flash memory Solid State Drive (SSD) forquickly storing and retrieving pixel data for presentation on display130. Display 130 presents schedules of events as 3D helical structures,based on input from scheduling system 110. Display 130 may comprise ahigh resolution flat panel monitor, a smart phone or tablet screen, etc.

FIG. 1 further depicts recommendation engine 150, which includes arecommendation controller 152 as well as a memory 154. Recommendationcontroller 152 reviews events in database 140 (e.g., events that haveyet to occur, have already occurred, or are presently occurring),analyzes the events based on criteria in analysis memory 154, and makesrecommendations to change patterns of behavior based on its analysis.

Recommendation controller 152 may be implemented as custom circuitry, aprocessor executing programmed instructions stored in program memory, orsome combination thereof. In one embodiment, scheduling system 110 andrecommendation engine 150 may be implemented on the same components of amobile device. The particular arrangement, number, and configuration ofcomponents described herein is exemplary and non-limiting. In oneembodiment, all of the elements shown in FIG. 1 are implemented bycomponentry on a cellular phone or tablet computer performinginstructions provided by an “app” stored in program memory.

Further details of the operation of scheduling system 110 will bedescribed with respect to method 200 of FIG. 2. Assume, for thisembodiment, that a user has recently listed a series of events toperform via a calendaring application. Further, assume thatvisualization controller 120 has accessed one or more informationsources in the form of Global Positioning System (GPS) coordinatesdetermined from satellite input, phone logs determined from a callhistory stored in memory, pedometry and/or heart rate information from afitness band, social networking posts accessed via a social networkApplication Programming Interface (API), etc. For example, controller120 may contact a social network server with an instruction directingthe server to provide a schedule. Events from all of these sources maybe pulled by visualization controller 120 via any suitable electronicinterface, or may be pushed to visualization controller 120 from outsidesources through an API (e.g., via an intermediary Internet server forscheduling system 110, or directly). Any combination of these events maybe stored in database 140 and referred to as a schedule.

FIG. 2 is a flowchart describing an exemplary method 200 to operate ascheduling system. According to FIG. 2, in step 202 visualizationcontroller 120 identifies a schedule comprising multiple eventsoccurring over a length of time. As used herein, an event is anyactivity attended by a person, related to a person, or related to anobject (e.g., an asset or equipment), such as playing golf, waking up,taking a step, transferring money between a user's bank accounts,attending a meeting, etc. In one embodiment, visualization controller120 identifies the schedule as a set of events maintained in database140, such as the entire set of events in database 140, or a filteredportion thereof (e.g., based on type of event, a length of time, a user,etc.). In a further embodiment, visualization controller 120 identifiesthe schedule by dynamically assembling the schedule from an acquiredstream of events that are being reported in real time from multiplesources. The events of such a dynamically generated schedule may bestored in database 140 for later review.

In step 204, visualization controller 120 selects a cyclic period withinthe length of time occupied by the schedule. As used herein, a cyclicperiod refers to a repeating standard unit of time, such as amillisecond, second, minute, hour, day, week, month, quarter, year,decade, etc. Visualization controller 120 may select the cyclic periodbased on a chosen scale for representing the helix to the user. Forexample, the selection of the cyclic period may be made based on userinput indicating a preferred zoom/magnification/detail level/timescale,by identifying the largest cyclic period that exists within the lengthof time covered by the schedule, or by any suitable technique.

Step 206 comprises controller 120 generating a representation of thelength of time as a view of a 3D helix. As referred to herein, a 3Dhelix is a helical shape that occupies three dimensions, and a view of a3D helix is a 2D representation of a 3D helix taken from a selectedviewpoint in a 3D space, and capable of being shown on a display.Visualization controller 120 generates the view of the 3D helix suchthat each revolution/rotation of the helix corresponds with an iterationof the selected cyclic period. In one embodiment, this process involvesgenerating equations for representing the 3D helix as a group of pictureelements (pixels) and/or volume elements (voxels) on a screen. Theequations governing the helix shape may be based on trigonometricfunctions along horizontal axes (e.g., x=sin(2π*t) radians, andy=cos(2π*t) radians, wherein each unit oft corresponds with the cyclicperiod of time), and a linear function along a vertical, central axis ofthe helix (e.g., z=t). The equations may be defined in an absolutecoordinate system (e.g., Cartesian, cylindrical, polar, etc.) orrelative coordinate system as desired. As used herein, a “path” of thehelix refers to the locations in space occupied by the helix as definedby its governing equations.

In a further embodiment, the visualization controller identifiesmultiple cyclic periods that each have a different duration within thelength of time of the schedule. The visualization controller thenrepresents the 3D helix as a nested helical structure wherein a parenthelix is defined according to a coordinate system and set of equationsas described above, and a child helix utilizes the path defined by theparent helix as a central axis from which a radius of the child helixextends. This means that locations on the child helix may be definedwith respect to the path of the parent helix via a relative coordinatesystem (e.g., in the example discussed above, a z axis of the childhelix may be defined with respect to the path of the parent helix). Thechild helix may alternatively be defined in an absolute coordinate spaceas desired. In a further embodiment, multiple child helices may benested inside of each other, in order to generate a helical structurethat exhibits a substantially fractal geometry. Thus, each revolution ofa child helix may correspond to a cyclic period that is shorter than thecyclic period of the parent helix.

For example, a parent helix with a revolution period of one day may nesta child helix with a revolution period of one hour. In this manner,twenty four revolutions of the child helix correspond with onerevolution of the parent helix, and twenty four revolutions of the childhelix are found within a single revolution of the parent helix.Furthermore, the ratio of child helix radius to parent helix radius maycorrespond with the ratio of child helix cyclic period (per revolution)to parent helix cyclic period (per revolution). Other aspects of thechild helix (e.g., pitch, radius, etc.) may be dynamically adjusted whenproperties of the parent helix are adjusted, to ensure that the radiusof the child helix with respect to the parent helix (or the number ofrevolutions of the child helix per revolution of the parent helix) ispreserved.

In one embodiment, controller 120 generates a view of a simplifiedversion of the helical structure for presentation at display 130. Forexample, if the helical structure includes multiple levels of nestedhelices, controller 120 may render the helix as having no nestedhelices, as having only a parent and a child helix, as having only threenested helices, etc. Controller 120 may dynamically adjust the number ofhelices shown/rendered (as well as which helices are shown), forexample, based on a level of zoom or detail requested by a user, orbased on a length of time selected for reviewing by the user. Thisensures that the user is not overwhelmed by complex geometry (e.g., onehundred nested helices shown all at once), but is still dynamicallypresented with relevant information. This also reduces overallprocessing load and ensures that the presented content more digestibleto the user.

In one embodiment, each parent/child helix is associated with multiplefixed zoom levels. The first zoom level illustrates the helix from theside (as shown in FIG. 3), and presents a “stack” of several revolutionsof the helix. For example, the zoom level may provide a traversablesliding window of three revolutions of the helix. The second zoom levelillustrates a single revolution of the helix in detail. In the secondzoom level, the helix is illustrated from a viewpoint that isperpendicular to the central axis of the helix. Thus, instead ofappearing as a “stack” of multiple revolutions, a single-revolutioncross-section of the helix is shown “head on” (e.g., as shown in FIG. 6)as a circle or split-washer. In the third zoom level, a portion of asingle revolution is shown. This may correspond with a stacked view of achild helix, which may itself be associated with multiple zoom levels asdescribed herein, and so on for further child helices. Thus, controller120 may identify user input adjusting a level of magnification of thehelix, and alter an angle of the view to present either a revolution ofthe parent 3D helix or a revolution of the child 3D helix, based on thelevel of magnification.

In step 208, controller 120 determines a location for each of the eventsalong a path defined by the 3D helix. This may comprise mapping each ofthe events to a 3D coordinate (e.g., (x,y,z), (r,θ,z), etc.) by applyinga location in time that the event occurred to the equations defining the3D helix. In embodiments where the 3D helix comprises a nested helicalstructure comprising parent helices and child helices, controller 120may identify the child helix with the smallest radius (e.g., thesmallest child helix) that is currently being displayed/rendered, andmay determine the event's location on that helix based on the equationsfor defining that helix. In a further embodiment, events of a durationshorter than a threshold length of time are suppressed from viewing, andthe threshold length of time changes depending on the level ofzoom/detail at which the 3D helix is viewed.

Some events may be represented as instantaneous points along the 3Dhelix, while other events may occupy contiguous periods of time asindicated by a path segment of the 3D helix. In one embodiment,controller 120 identifies recurring events (or events of a similar type)that are reported on a recurring basis (e.g., once per minute, once perday, etc.), and infers that individual, proximate reports indicate acontinuous and ongoing overarching activity. For example, a series ofindividual timestamped step reports from a pedometer may accumulate toidentify as a single overarching event (a jog), while a break orreduction in such events for a threshold period of time (e.g., one fullminute) may indicate that the overarching event has completed. Suchoverarching activities may be represented as a single path segment ofthe 3D helix, even though they are reported as a series of instantaneousor short events.

In a further embodiment, reported events include a start time and an endtime. Thus, when identifying locations for events on the 3D helix,controller 120 may identify a single coordinate on the helix that anevent corresponds with, or may determining a length of a segment of thehelix occupied by the event when the event covers a duration of time. Instep 210, controller 120 operates I/F 118 to direct display 130 topresent the 3D helix and the event locations for viewing at display 130.This may comprise transmitting instructions for displaying pixels via ascreen, projector, or other display device. The instructions maycomprise vector instructions for drawing various components of the 3Dhelix, bitmap information, voxels that define the 3D helix, etc.

Method 200 provides a benefit over prior systems, because itrevolutionizes visualization of cyclic scheduling data patterns. Forexample, visualization controller 120 may present the 3D helix as a full3D model capable of being panned, rotated, and zoomed as desired by auser, and even presented in an exploded axonometric, extruded, orexpanded form. Visualization controller 120 may even alter selectedportions of the 3D helix by presenting those selected portion in anexploded view, wherein each event or category of events in the selectedportion exhibits a different radius from a central axis of the 3D helix.Method 200 enables the user to acquire a holistic understanding of howtheir time is used, as well as a granular understanding of theindividual events that make up their schedule. At the same time, thecyclic nature of the 3D helix presented the user provides an intuitiveinsight into how events (and/or categories of events) cyclically repeatover time.

Even though the steps of method 200 are described with reference toscheduling system 110 of FIG. 1, method 200 can be performed in othercalendaring and/or visualization systems as desired. The steps of theflowcharts described herein are not all inclusive and can include othersteps not shown. The steps described herein can also be performed in analternative order.

FIG. 3 is a diagram 300 illustrating an exemplary helical representation(i.e., 3D helix 304) of a schedule of events. 3D helix 304 defines ahelical path with respect to a central axis 306, which may be anabsolute axis in a coordinate space, or a relative axis along the pathof a parent helix. As shown in FIG. 3, various aspects of helix 304 maybe quantified, such as a pitch angle θ, indicating an angle betweencorresponding radial locations on neighboring revolutions, a radius R, apitch height P indicating a distance along the central axis betweencorresponding radial locations on neighboring revolutions of the helix,a height H of the helix along central axis 306, and an overall pathlength L.

Helix 304 also includes multiple events, including events represented bya single point, and events represented by a line/path length of helix304. In this embodiment, helix 304 includes events 310, 320, and 330,which are periodically recurring events that occur at a point in time(e.g., waking up), and helix 304 also includes event 340, which occupiesa length of time along helix 304 as shown by a continuous protrusion offof the path of helix 304.

FIGS. 4A-D illustrate a detailed view of a more complex helix than thatrepresented in FIG. 3. Specifically, FIGS. 4A-D are diagramsillustrating an exemplary nested helical representation of a schedule ofevents. FIG. 4A shows a helix 404 located in an absolute coordinatespace, wherein each revolution of helix 404 corresponds with a year. Atop portion of helix 404 illustrates the path of helix 404 withoutshowing any of the child helices nested inside of it, for the sake ofenhancing clarity. Meanwhile, a bottom portion of helix 404 illustratesa helix 406 which utilizes the path of helix 404 as a central axis.Therefore, helix 404 operates as a parent of helix 406, which is a childof helix 404.

In this embodiment, each revolution of child helix 406 corresponds witha single day, so three hundred and sixty five revolutions of the childhelix 406 occur in one revolution of the parent helix 404. Thisparent/child relationship continues when the view is zoomed in, as shownby FIG. 4B, where helix 408 which utilizes helix 406 as its parenthelix. Each revolution of helix 408 corresponds with an hour. Therelationship continues in FIG. 4C as helix 410 utilizes helix 408 as itsparent helix. Each revolution of helix 410 corresponds with a minute.Furthermore, in FIG. 4D, Helix 412 utilizes helix 410 as its parenthelix. Each revolution of helix 412 corresponds with a second.

FIG. 5 is a diagram illustrating an exemplary helical arrangement ofplanar images. Specifically, FIG. 5 illustrates an embodiment wherecontroller 120 depicts the 3D helix as a discretized helical patterncomprising a series of planar images following a helical path. In FIG.5, only a portion of the planar images are shown for the sake ofclarity. In this embodiment the planar images (e.g., 510, 520) areplaced along the path defined by 3D helix 504, and each comprise asubstantially circular cross-section of helical path 504. Furthermore,the planar images each have a center/centroid or edge location thattouches the path of helix 504, and each of the planar images is normal(or substantially normal) to the path of helix 504 and/or the XY plane.Where one revolution of helix 504 may correspond with one cyclic periodof time, a planar image along helix 504 may correspond with a shortercyclic period of time. Thus, if one revolution of helix 504 correspondswith a month, one planar image may correspond with a day.

FIG. 6 is a diagram 600 illustrating exemplary cross-sectional views ofone revolution of a helical representation of a schedule of events.These cross-sectional views may correspond with the planar images ofFIG. 5 described above. FIG. 6 illustrates two different versions ofcross-sectional views, including a ring/doughnut view 610, and a piechart view 620. Ring view 610 and pie chart view 620 each represent thesame activities performed over time (e.g., sleep as shown at 612, 622).

FIG. 7 is a table 700 illustrating exemplary data stored for a scheduleof events. Table 700 defines a schedule of events, based on informationpulled from various sources, as well as information pushed to database140 via an outside source contacting visualization controller 120 orrecommendation controller 152 (e.g., via an API). As shown in FIG. 7,information stored in table 700 may include a timestamp, a location ofthe user when the event occurred (e.g., as indicated by GPSinformation), one or more coordinates defining a location of the eventalong a 3D helix (in this case, multiple sets of coordinates that eachindicate a position on a parent or child helix), and one or moredescriptors (e.g., event name, source, a layer number for the event, oneor more tags indicating people who are involved, locations that arevisited, categories for the event, etc.). The descriptors may be used toassociated similar events, categorize types of events, and assign eventsto layers as desired. The descriptors may further be used as inputs forrecommendation engine 150, as described below in the examples section.

FIG. 8 is a diagram 800 illustrating an exemplary set of layers for aschedule of events. As shown in FIG. 8, each event occupies a radialportion of one revolution of a helix, as indicated by the angle Φ. Thelength of each of the events in time corresponds with the size of Φ forthat event. Furthermore, the events are presented at some radius Rcorresponding with a radius of the 3D helix, and the events are given aradial location within the revolution based on their start times. InFIG. 8, each event is categorized into a layer (e.g., a layer for activeliving/fitness, a layer for work, a layer for leisure activities), andevents for each layer exhibit a different shape, style, size, color,etc. Thus, events 810, 812, 804, and 806 represent different layers(because they are different types of shapes, such as right trianglesversus isosceles triangles), while events 802 and 808 represent eventsin the same layer. FIG. 9 is a diagram 900 illustrating a furtherexemplary set of layers for a schedule of events. In this embodiment,each layer is associated with a unique combination of thickness T andradial distance D from the central axis of the 3D helix. Thus, while thehelix itself may be defined with a radius R, individual layers maydeviate from this radius R in order to distinguish themselves from eachother. In this manner, a visualization controller may correlate eachscheduled event with a category, assign events correlated with differentcategories to different layers, and represent events for each layer onthe helix with a different opacity, color, thickness, size, or shape. Inone embodiment, each layer may be presented in this manner as part of anexploded axonometric or extruded view to the user

In a further embodiment, selecting an event, a set of events, or a layermay cause a visualization controller to highlight in one of size, shape,color, radial distance, thickness, opacity, or other parameters. In oneembodiment, events are assigned to categories (e.g., fitness, diet,work, etc.), and each of the categories is assigned to a differentlayer. The layers may be turned on or off (or may be otherwisemanipulated) by updating a table stored in visualization memory and/or adatabase.

In a further embodiment, each layer represents a person that an event isassociated with, a category for the event (e.g., fitness, work,networking, social, leisure, sport), a priority level for the eventranking an importance of the event with respect to other events, athing, task, or concept associated with the event, etc. Still further,in one embodiment a visualization controller loads multiple schedules(e.g., from a centralized Internet server, by contacting a variety ofother scheduling systems, or by identifying a set of users of ascheduling system) that each correspond with a different user. In suchan embodiment, activities for each user may be represented by adifferent layer on the same helix (representing, for example, an entireproject), or by different helices placed proximate to each other. Thevisualization controller may then allow individual users (as identifiedby a set of unique credentials such as a login and password) to modifytheir own layer of events, or to modify a combined schedule of eventsfor all users. This may include flagging certain events, attachingquestions or comments to certain events, assigning events to differentusers, and more. In this manner, users may collaborate with each otherto facilitate the completion of various projects as desired. Arecommendation engine may further regularly generate analytics andreports for a helix, including a multi-user helix, in order to indicatethe categories of common events, the amount that a schedule of eventshas changed from its original version, and other statistics. Stillfurther, this information may be used by recommendation controller 152to identify shared periods of free time and/or low priority events formultiple users, and to recommend meeting times and/or locations based onthose shared periods.

FIG. 10 is a diagram 1000 illustrating an exemplary linearized length ofa helix representing a schedule of events. According to FIG. 10, a usermay direct a visualization controller to select a portion of a 3D helixas shown in 1010, and the visualization controller may unfurl the helixto linearize the chain of events onto a timeline, as shown in 1020 and1030. A visualization controller may perform this operation byidentifying a selected length of the helix in time, and arranging theevents occurring over the length of time onto a linear timeline forviewing. In a further embodiment, the visualization controller mayre-arrange events shown on the unfurled helix, by grouping events fromsimilar layers/categories together on the timeline for viewing. Thisallows the user to quickly review and compare categories of events tovisually determine the cumulative amount of time spent performingvarious activities during the selected length of time. Otherrepresentations may be shown with this information, such as pie charts,bar charts, and other suitable visualizations.

FIG. 11 is a diagram 1100 illustrating an exemplary helicalrepresentation of a schedule of events exhibiting a variable pitch. Inthis embodiment, 3D helix 1104 exhibits a default pitch angle P1.However, a portion of 3D helix 1104 is shown with a changed pitch angleP2, allowing for easier analysis of that portion of 3D helix 1104. Forexample, pitch angle P2 may be substantially higher than pitch angle P1,and the portion of helix 1104 shown with pitch angle P2 may correspondwith a region of 3D helix 1104 (or a length of time) selected by theuser. The pitch angle P2 may be dynamically based on user input, zoomlevel, or the length of time covered in a user's selection of a regionof the helix. In further embodiments where 3D helix 1104 comprises anested helical structure, the altered pitch may apply to just the parenthelix, just a child helix, or some combination thereof.

Examples

In the following examples, additional processes, systems, and methodsare described in the context of a helical time mapping system. Accordingto this example, a processor and memory on a user's smart phoneimplement a visualization controller and visualization memory. Thevisualization controller periodically queries an API of a socialnetwork, a calendar of the user associated with the user's emailaccount, and GPS location services provided by the phone in order togenerate a timeline of sufficient density and depth to enable the userto accurately and holistically evaluate their patterns of behavior. Thisevent information is stored in a database in memory on the phone. Inthis example, when the user opens an app on the phone, the visualizationcontroller identifies a default zoom level for viewing a 3D helix, whichcorresponds to a nested helical structure where a parent helix hasrevolutions that each correspond to one day, and a child helix hasrevolutions that each correspond to one hour. The path of the parenthelix is defined in an absolute Cartesian coordinate space by theequations x=sin(2π*t) radians, y=cos(2π*t), radians and z=t, where t ismeasured in days. Meanwhile, the path of the child helix is defined (ina relative Cartesian coordinate space following the path of the parenthelix), by the equations x′=sin(48πt) radians, divided by 24,y′=cos(48πt), divided by 24, and z′=t/24, where t is measured in days.

The visualization controller then begins to map individual events storedin the database to locations on the 3D helix. The visualizationcontroller starts by identifying a timestamp for the first event in thedatabase in time (or user selected portion thereof), and setting thattimestamp value to t=0. The visualization controller then identifies atimestamp for the next event in time in the database, and identifies thedifference in time between the identified event and the first event, indays. This difference in time corresponds with a value t₁, which isapplied to the equations above to identify a location (x₁, y₁, z₁) alongon the parent helix in the absolute coordinate space. The visualizationcontroller then defines a relative coordinate space with axes X′, Y′,and Z′, where Z′ follows the path of the parent helix, and X′ and Y′ areaxes that are perpendicular to each other and to Z′. The visualizationcontroller then applies the equations for the child helix to identify alocation (x₂′, y₂′, z₂′) for the event along the child helix. Thisrelative coordinate is then converted to a fixed location in theabsolute coordinate space (x₂, y₂, z₂). The visualization controllerperforms this task for each of multiple events in the database, andadditionally calculates a 3D path of the parent helix and the childhelix. Similar operations may be performed for further child heliceswith respect to their parents. Once a 3D model has been generated, thevisualization controller generates views of the 3D model via a GraphicalUser Interface (GUI) as desired by panning, zooming, tilting, rotating,etc.

Events displayed via the GUI may be clickable targets, such that a usermay select an event and be presented with a detailed description of theevent. For example, clicking on an event may cause the visualizationcontroller to present a name for the event, an exact time of the event,notes about the event, all tags/categories associated with the event,and other contextual information as desired. If the event is a socialnetworking event, then a picture associated with the event (as stored inthe database) may also be presented to the user. The details for anindividual event may also be moved within the GUI, such that multipleevents may be selected, and their details compared. A user may alsodrag-select a portion of the 3D helix for viewing, and the visualizationcontroller may then generate a new view illustrating that portion of thehelix.

In a further example, the mathematical equations governing a nestedhelical structure may be generated by a process which takes anydifferentiable parametric set of equations and wraps a helix around thefigure they describe. Both helices (and any subsequent ones) may begoverned by the same independent variable, t. The variable t may beunitless from a mathematical perspective, and the point in time t=0 maybe arbitrarily defined, so both the units for t and origin point t=0 maybe chosen in advance. For instance, if t is described in units of daysand t=0 corresponds with Jan. 1, 2015 at 12:00 am, then noon on April8th may correspond to t=97.5. Selected times may be recorded, and easilydisplayed on a nested helix by plugging in the appropriate t into theequations. The generating process starts by considering a point movingaround a circle in the XY plane. To generate a basic helix, a controllerprogrammatically moves the circle up over time, tracking the path thepoint takes. To move the point to generate a helix around another,nested path, two steps may be taken. In the first step, the plane of thecircle may be rotated so that it is perpendicular to the direction oftravel of the nested path at any given time t (e.g., via derivatives,where the direction of travel at the point (x(t), y(t), z(t)) is (dx/dt,dy/dt, dz/dt). Variations may occur based on how the rotation isperformed, and the below matrices are applied to rotate around thex-axis first and then the z-axis.

In the second step, the circle is translated so that its center is onthe nested path. The point will now trace out the helix. Each subsequenthelix will add two additional variables: a radius for the circle and afrequency parameter, co. The ratio between subsequent frequencyparameters determines how many loops a new child helix makes per oneloop of the parent. This means that if a day loop has frequency ω_(d),an hour loop may have a frequency ω_(hr)32 24ω_(d). Adjusting thefrequency parameters also adjusts the units oft.

The following equations and code may be used, for example, in WolframMathematica software to generate a nested helical pattern.

TABLE 1 Code for Generating Nested Helical Patternx1[r1_,w1_,t_:]=r1*Cos[w1*t] y1[r1_,w1_,t_:]=r1*Sin[w1*t]z1[r1_,c1_,t_]:=c1*tnorm1[r1_,w1_,t_,c1_]=Sqrt[D[x1[r1,w1,t],t]{circumflex over( )}2+D[y1[r1,w1,t],t]{circumflex over ( )}2+D[z1[r1,c1,t],t]{circumflexover ( )}2]; dx1[r1_,w1_,t_,c1_]=D[x1[r1,w1,t],t]/norm1[r1,w1,t,c1];dy1[r1_,w1_,t_,c1_]=D[y1[r1,w1,t],t]/norm1[r1,w1,t,c1];dz1[r1_,w1_,t_,c1_]=D[z1[r1,c1,t],t]/norm1[r1,w1,t,c1];dxy1[r1_,w1_,t_,c1_]= Sqrt[dx1[r1,w1,t,c1]{circumflex over( )}2+dy1[r1,w1,t,c1]{circumflex over ( )}2];(x2[r2_,w2_,r1_,w1_,c1_,t_] y2[r2_,w2_,r1_,w1_,c1_,t_]z2[r2_,w2_,r1_,w1_,c1_,t_] )=Simplify[(x1[r1,w1,t] y1[r1,w1,t]z1[r1,c1,t] )+(dy1[r1,w1,t,c1]/dxy1[r1,w1,t,c1]dx1[r1,w1,t,c1]/dxy1[r1,w1,t,c1] 0 −dx1[r1,w1,t,c1]/dxy1[r1,w1,t,c1]dy1[r1,w1,t,c1]/dxy1[r1,w1,t,c1] 0 0 0 1 ).(1 0 0 0dz1[r1,w1,t,c1]dxy1[r1,w1,t,c1] 0 −dxy1[r1,w1,t,c1] dz1[r1,w1,t,c1]).(r2*Cos[w2*t] r2*Sin[w2*t] 0 )]; (x2[r2,w2,r1,w1,c1,t]y2[r2,w2,r1,w1,c1,t] z2[r2,w2,r1,w1,c1,t] ) {{(r1 ((c1{circumflex over( )}2+r1{circumflex over ( )}2 w1{circumflex over ( )}2) Cos[t w1](Sqrt[(r1{circumflex over ( )}2 w1{circumflex over ( )}2)/(c1{circumflexover ( )}2+r1{circumflex over ( )}2 w1{circumflex over ( )}2)]Sqrt[c1{circumflex over ( )}2+r1{circumflex over ( )}2 w1{circumflexover ( )}2]+r2 w1 Cos[t w2])−c1 r2 w1 Sqrt[c1{circumflex over( )}2+r1{circumflex over ( )}2 w1{circumflex over ( )}2] Sin[t w1] Sin[tw2]))/(Sqrt[(r1{circumflex over ( )}2 w1{circumflex over( )}2)/(c1{circumflex over ( )}2+r1{circumflex over ( )}2 Fw1{circumflexover ( )}2)] (c1{circumflex over ( )}2+r1{circumflex over ( )}2w1{circumflex over ( )}2){circumflex over ( )}(3/2))},{(r1((c1{circumflex over ( )}2+r1{circumflex over ( )}2 w1{circumflex over( )}2) (Sqrt[(r1{circumflex over ( )}2 w1{circumflex over( )}2)/(c1{circumflex over ( )}2+r1{circumflex over ( )}2 w1{circumflexover ( )}2)] Sqrt[c1{circumflex over ( )}2+r1{circumflex over ( )}2w1{circumflex over ( )}2]+r2 w1 Cos[t w2]) Sin[t w1]+c1 r2 w1Sqrt[c1{circumflex over ( )}2+r1{circumflex over ( )}2 w1{circumflexover ( )}2] Cos[t w1] Sin[t w2]))/(Sqrt[(r1{circumflex over ( )}2w1{circumflex over ( )}2)/(c1{circumflex over ( )}2+r1{circumflex over( )}2 w1{circumflex over ( )}2)] (c1{circumflex over ( )}2+r1{circumflexover ( )}2 w1{circumflex over ( )}2){circumflex over ( )}(3/2))},{c1t-r2 Sqrt[(r1{circumflex over ( )}2 w1{circumflex over( )}2)/(c1{circumflex over ( )}2+r1{circumflex over ( )}2 w1{circumflexover ( )}2)] Sin[t w2]}}norm2[r2_,w2_,r1_,w1_,t_,c1_]=\[Sqrt](D[x2[r2,w2,r1,w1,c1,t],t]{circumflexover ( )}2+D[y2[r2,w2,r1,w1,c1,t],t]{circumflex over ( )}2+D[z2[r2,w2,r1,w1,c1,t],t]{circumflex over ( )}2);dx2[r2_,w2_,r1_,w1_,t_,c1_]=D[x2[r2,w2,r1,w1,c1,t],t]/norm2[r2,w2,r1,w1,t,c1];dy2[r2_,w2_,r1_,w1_,t_,c1_]=D[y2[r2,w2,r1,w1,c1,t],t]/norm2[r2,w2,r1,w1,t,c1];dz2[r2_,w2_,r1_,w1_,t_,c1_]=D[z2[r2,w2,r1,w1,c1,t],t]/norm2[r2,w2,r1,w1,t,c1];dxy2[r2_,w2_,r1_,w1_,t_,c1_]= \[Sqrt](dx2[r2,w2,r1,w1,t,c1]{circumflexover ( )}2+dy2[r2,w2,r1,w1,t,c1]{circumflex over ( )}2);(x3[r3_,w3_,r2_,w2_,r1_,w1_,c1_,t_] y3[r3_,w3_,r2_,w2_,r1_,w1_,c1_,t_]z3[r3_,w3_,r2_,w2_,r1_,w1_,c1_,t_] )=(x2[r2,w2,r1,w1,c1,t]y2[r2,w2,r1,w1,c1,t] z2[r2,w2,r1,w1,c1,t])+(dy2[r2,w2,r1,w1,t,c1]/dxy2[r2,w2,r1,w1,t,c1]dx2[r2,w2,r1,w1,t,c1]/dxy2[r2,w2,r1,w1,t,c1] 0−dx2[r2,w2,r1,w1,t,c1]/dxy2[r2,w2,r1,w1,t,c1]dy2[r2,w2,r1,w1,t,c1]/dxy2[r2,w2,r1,w1,t,c1] 0 0 0 1 ).(1 0 0 0dz2[r2,w2,r1,w1,t,c1] dxy2[r2,w2,r1,w1,t,c1] 0 −dxy2[r2,w2,r1,w1,t,c1]dz2[r2,w2,r1,w1,t,c1] ).(r3*Cos[w3*t] r3*Sin[w3*t] 0 );norm3[r3_,w3_,r2_,w2_,r1_,w1_,t_,c1_]=\[Sqrt](D[x3[r3,w3,r2,w2,r1,w1,c1,t],t]{circumflexover ( )}2+D[y3[r3,w3,r 2,w2,r1,w1,c1,t],t]{circumflex over( )}2+D[z3[r3,w3,r2,w2,r1,w1,c1,t],t]{circumflex over ( )}2);dx3[r3_,w3_,r2_,w2_,r1_,w1_,t_,c1_]=D[x3[r3,w3,r2,w2,r1,w1,c1,t],t]/norm3[r3,w3,r2,w2,r1,w1,t,c1];dy3[r3_,w3_,r2_,w2_,r1_,w1_,t_,c1_]=D[y3[r3,w3,r2,w2,r1,w1,c1,t],t]/norm3[r3,w3,r2,w2,r1,w1,t,c1];dz3[r3_,w3_,r2_,w2_,r1_,w1_,t_,c1_]=D[z3[r3,w3,r2,w2,r1,w1,c1,t],t]/norm3[r3,w3,r2,w2,r1,w1,t,c1]; dxy3[r3_,w3_,r2_,w2_,r1_,w1_,t_,c1_]=\[Sqrt](dx3[r3,w3,r2,w2,r1,w1,t,c1]{circumflex over( )}2+dy3[r3,w3,r2,w2,r1,w1,t,c1]{circumflex over ( )}2);(x4[r4_,w4_,r3_,w3_,r2_,w2_,r1_,w1_,c1_,t_]y4[r4_,w4_,r3_,w3_,r2_,w2_,r1_,w1_,c1_,t_]z4[r4_,w4_,r3_,w3_,r2_,w2_,r1_,w1_,c1_,t_] )=(x3[r3,w3,r2,w2,r1,w1,c1,t]y3[r3,w3,r2,w2,r1,w1,c1,t] z3[r3,w3,r2,w2,r1,w1,c1,t])+(dy3[r3,w3,r2,w2,r1,w1,t,c1]/dxy3[r3,w3,r2,w2,r1,w1,t,c1]dx3[r3,w3,r2,w2,r1,w1,t,c1]/dxy3[r3,w3,r2,w2,r1,w1,t,c1] 0−dx3[r3,w3,r2,w2,r1,w1,t,c1]/dxy3[r3,w3,r2,w2,r1,w1,t,c1]dy3[r3,w3,r2,w2,r1,w1,t,c1]/dxy3[r3,w3,r2,w2,r1,w1,t,c1] 0 0 0 1 ).(1 00 0 dz3[r3,w3,r2,w2,r1,w1,t,c1] dxy3[r3,w3,r2,w2,r1,w1,t,c1] 0−dxy3[r3,w3,r2,w2,r1,w1,t,c1] dz3[r3,w3,r2,w2,r1,w1,t,c1]).(r4*Cos[w4*t] r4*Sin[w4*t] 0 );norm4[r4_,w4_,r3_,w3_,r2_,w2_,r1_,w1_,t_,c1_]=\[Sqrt](D[x4[r4,w4,r3,w3,r2,w2,r1,w1,c1,t],t]{circumflexover ( )} 2+D[y4[r4,w4,r3,w3,r2,w2,r1,w1,c1,t],t]{circumflex over( )}2+D[z4[r4,w4,r3,w3,r2,w2,r1,w1,c1,t],t]{circumflex over ( )}2);dx4[r4_,w4_,r3_,w3_,r2_,w2_,r1_,w1_,t_,c1_]=D[x4[r4,w4,r3,w3,r2,w2,r1,w1,c1,t],t]/norm4[r4,w4,r3,w3,r2,w2,r1,w1,t,c1];dy4[r4_,w4_,r3_,w3_,r2_,w2_,r1_,w1_,t_,c1_]=D[y4[r4,w4,r3,w3,r2,w2,r1,w1,c1,t],t]/norm4[r4,w4,r3,w3,r2,w2,r1,w1,t,c1];dz4[r4_,w4_,r3_,w3_,r2_,w2_,r1_,w1_,t_,c1_]=D[z4[r4,w4,r3,w3,r2,w2,r1,w1,c1,t],t]/norm4[r4,w4,r3,w3,r2,w2,r1,w1,t,c1];dxy4[r4_,w4_,r3_,w3_,r2_,w2_,r1_,w1_,t_,c1_]=\[Sqrt](dx4[r4,w4,r3,w3,r2,w2,r1,w1,t,c1]{circumflex over( )}2+dy4[r4,w4,r3,w3,r2,w2,r1,w1,t,c1]{circumflex over ( )}2);(x5[r5_,w5_,r4_,w4_,r3_,w3_,r2_,w2_,r1_,w1_,c1_,t_]y5[r5_,w5_,r4_,w4_,r3_,w3_,r2_,w2_,r1_,w1_,c1_,t_]z5[r5_,w5_,r4_,w4_,r3_,w3_,r2_,w2_,r1_,w1_,c1_,t_])=(x4[r4,w4,r3,w3,r2,w2,r1,w1,c1,t] y4[r4,w4,r3,w3,r2,w2,r1,w1,c1,t]z4[r4,w4,r3,w3,r2,w2,r1,w1,c1,t])+(dy4[r4,w4,r3,w3,r2,w2,r1,w1,t,c1]/dxy4[r4,w4,r3,w3,r2,w2,r1,w1,t,c1]dx4[r4,w4,r3,w3,r2,w2,r1,w1,t,c1]/dxy4[r4,w4,r3,w3,r2,w2,r1,w1,t,c1] 0−dx4[r4,w4,r3,w3,r2,w2,r1,w1,t,c1]/dxy4[r4,w4,r3,w3,r2,w2,r1,w1,t,c1]dy4[r4,w4,r3,w3,r2,w2,r1,w1,t,c1]/dxy4[r4,w4,r3,w3,r2,w2,r1,w1,t,c1] 0 00 1 0 0 0 dz4[r4,w4,r3,w3,r2,w2,r1,w1,t,c1]dxy4[r4,w4,r3,w3,r2,w2,r1,w1,t,c1] 0 −dxy4[r4,w4,r3,w3,r2,w2,r1,w1,t,c1]dz4[r4,w4,r3,w3,r2,w2,r1,w1,t,c1] ).(r5*Cos[w5*t] r5*Sin[w5*t] 0 );ParametricPlot3D[{{x1[10,2 Pi, t],y1[10,2 Pi, t],z1[10, 10,t]},{x2[1,730 Pi, 10,2 Pi, 10, t],y2[1,730 Pi, 10,2 Pi, 10, t],z2[1,730Pi, 10,2 Pi, 10, t]},{x3[.2,24*730 Pi,1,730 Pi, 10,2 Pi, 10,t],y3[.2,24*730 Pi,1,730 Pi, 10,2 Pi, 10, t],z3[.2,24*730 Pi,1,730 Pi,10,2 Pi, 10, t]}},{t,0,1},PlotStyle->{{Blue,Thick},Red,Green},PerformanceGoal->“Quality”,PlotPoints->500]

Recommendations and Dynamic Rescheduling

FIGS. 12-15 illustrate exemplary operations performed by arecommendation system for dynamically analyzing and/or revising a user'sschedule. FIG. 12 is a diagram 1200 illustrating an exemplaryrescheduling of events based on a location of a user. According to FIG.12, recommendation system 150 detects, based on a user's currentlocation, a current time, and a location and time of an upcoming event,that the user will be unable to reach the upcoming event at the intendedtime. This may be performed, for example, by comparing estimated time ofarrival (e.g., as calculated by an application like Google Maps), a modeof transport, and expected parking availability, against the expectedtime for the event, and determining an amount by which the user will belate Δ based on this information. Upon determining that the user will belate, recommendation controller 152 dynamically reschedules the upcomingevent (in this case, a meeting) to move the meeting to a time and/orlocation that should be achievable for the user (e.g., based on criteriastored in memory 154, such as information indicating the anticipatedamount of delay). Recommendation controller 152 further determines thatmoving the meeting to a later point in time will conflict with a laterscheduled event, golf. However, based on information indicating that apriority of the meeting is higher than the priority of golf,recommendation controller 152 elects to reschedule golf as well insteadof moving the meeting back to its original time, and notifies affectedparties such as other players, the golf course, etc. This in turn causesa recursive “ripple effect” wherein the controller 152 automaticallyidentifies the next event after golf, lunch, and dynamically resizes orreschedules the event to account for the change in time, resulting in anew schedule 1220 for the user. All of the above operations may beperformed automatically with or without asking for permission from theuser.

FIG. 13 is a flowchart illustrating an exemplary method 1300 forrescheduling events based on a location of a user (e.g., as shown inFIG. 12). According to FIG. 13, in step 1302 recommendation controller152 detects an inability of a user to arrive at an event at a scheduledtime (or any other triggering condition causing recommendationcontroller 152 to identify an event for rescheduling). This may bedetermined based on a current location of the user compared against anexpected location of the user at the time of the event, may be based ona notification from the user, or based on other suitable factors asdesired. Based on this analysis, recommendation controller 152determines that the present schedule of events for the user is no longerviable. Thus, recommendation controller 152 proceeds to step 1304 whereit determines whether a location or time of the event can be moved inorder to accommodate the user's present situation. For example, if theevent can be moved to a location that is closer to a current oranticipated location of the user, or if the event can be moved to alater point in time that the user is anticipated to arrive, then thereis the potential for rescheduling the event instead of canceling it. Asa part of this step, recommendation controller 152 may further identifya variety of potential available new times and/or locations for theevent.

If the event can be moved in step 1304, recommendation controller 152determines where or not the changed location/time causes a conflict witha higher priority event in step 1306. If the change causes a conflictwith a lower priority event, there is no issue because the lowerpriority event may be dynamically rescheduled via a recursiveimplementation of method 1300, and so on for other events displaced bythe lower priority event. However, if there is a higher priority eventthat will be impacted by the changed location and/or time, then theoriginal event should not be rescheduled to conflict with or otherwiseimpact the high priority event.

Priority itself may be defined along any number of dimensions. Forexample, priority may be determined based on user input, a type orcategory for the event, an amount of billing associated with the event,a project associated with the event, information describing peopleattending the event (e.g., based on a friendship level, attractivenesslevel, business income level, number of social network followers, etc.),and/or other factors as desired. Recommendation controller 152 may evenrecommend cancelling an activity if the activity has a priority levelbelow a threshold amount, even if there are no other conflicting events.This allows recommendation controller 152 to weed out bad meetings orother events that result in a waste of time.

If the new location or time does not cause a conflict with a higherpriority event, then in step 1308 recommendation controller 152 proceedsto determine whether the change is acceptable for other attendees of theevent being moved. This step may be selectively performed depending on,for example, a priority level associated with each of the other eventattendees. This step may comprise consulting other recommendationcontrollers (or other schedules of other users) in order to determinewhether other attendees for the event are capable of adapting to thisproposed change. If the changed location has been accepted by otherusers (e.g., other high-priority users) or is otherwise acceptable basedon conflicts only existing with low-priority users then recommendationcontroller 152 reschedules the event location or time in step 1310, andin step 1312 recommendation controller 152 reschedules the conflictinglater events that were impacted by the change via method 1300. Since thelater events that were impacted by moving the original event are of alower-priority (or the same level of priority) than the original event,recursively performing method 1300 resolves the schedule for highpriority events, followed by lower-priority events. Recommendationcontroller 152 may further report the change in event time and locationto the other users, via email, instant messaging, or any suitablecommunication channel.

In a further embodiment, recommendation controller 152 is operable toanalyze schedules of other event attendees, and to identify a time inthe future when all (or a threshold number of) meeting attendees areexpected to be in a similar location. Similar techniques may be used toidentify a time in the future when a specific venue is expected to beavailable for the attendees (e.g., by analyzing a schedule specificallymaintained for the venue itself), or to identify a future point in timewhen a service provider (e.g., doctor) is expected to be available formeeting participants (such as a doctor). Recommendation controller 152then attempts to reschedule the meeting to the identified time, viasteps 1304-1312 of method 1300 described above.

FIG. 14 is a diagram 1400 illustrating an exemplary set of behavioralpatterns compared against a user's schedule. According to FIG. 14,recommendation controller 152 stores behavioral patterns that eachcorrespond with a different personality type. Each behavioral patternmay be stored as a set of times (e.g., days of the week, hours of theday) together with a category of events or activities associated withthose times. For example, a “cheetah” behavioral pattern may includemany socially or physically active events, while a “panda” behavioralpattern may include a large number of low-energy recreational andleisure activities. A behavioral pattern may also indicate ranges oftime for the activities/categories of events that it describes, andthese ranges may even overlap with each other in time. In such a case, auser's scheduled activity may match a behavioral pattern if it matchesany of the categories of events (or specific events) listed for thattime slot. Behavioral patterns may also represent the schedules offamous individuals such as athletes, actors, celebrities, fitness gurus,and others.

Recommendation controller 152 may compare a user's schedule of events toa stored behavioral pattern, for example, based on the names,categories, locations, and times of activities indicated in the user'sschedule of events. Based on this information, recommendation controller152 may classify the user into a personality type. For example,recommendation controller 152 may analyze schedule 1410 from a user, anddetect large number of matches over a long period of time indicating ahigh correlation with behavioral pattern 1420 (“panda”), and may detecta small number of matches over a short period of time indicating a lowcorrelation with behavioral pattern 1430 (“cheetah”). Thus,recommendation controller 152 may classify the user as having a “panda”personality type because of the higher correlation of the user'sschedule with that behavioral pattern.

Based on this personality type, recommendation controller 152 mayfurther identify changes to the user's schedule to optimally adjust tothat personality type, or to transition to a new personality type. Forexample, in order to transition to a cheetah personality type,recommendation controller 152 may display a recommendation to the userto wake up earlier on a daily basis. For example, controller 152 (or theuser) may ascribe a happiness or priority rating to each event on theuser's schedule, and controller 152 may then identify events with thehighest happiness or priority rating, and suggest replacing lowerhappiness/priority events with higher happiness/priority events. In afurther embodiment, the user may define a set of goals in terms ofchanged activities, and controller 152 may identify periods of time forperforming those activities based on the personality type of the user.For example, a user with the “panda” personality type may request morefitness activities in their schedule. Controller 152 may determine,based on the “panda” behavioral pattern, that highly active earlymorning events are incompatible with the user, and may thereforerecommend replacing the user's evening schedule with visits to the gym,a long walk, or other fitness activities. Controller 152 may furthershape the tone of recommendations based on a user's personalitytype/behavioral pattern. Thus, one behavioral pattern may be associatedwith kind suggestions, while another behavioral pattern may beassociated with blunt or aggressive commands.

FIG. 15 is a flowchart 1500 illustrating an exemplary method forcorrelating a user's schedule with a behavioral pattern. According toFIG. 15, in step 1502 recommendation controller 152 identifies aschedule of events for a user from database 140. The schedule of eventsmay represent any suitable period of time, such as a day, a month, etc.,and may represent a schedule of future events or a schedule of eventsthat have already happened. Recommendation controller 154 may furthergenerate a generic schedule of a day, weekday, hour, month, etc., basedon identified schedule, for example, by calculating and aggregating apercentage of each hour of each weekday taken up by sleeping, working,fitness, etc.

In step 1504, recommendation controller 152 categorizes the events inthe schedule, based on their time of day and the type of event that isoccurring. For example, recommendation controller 152 may assign eachevent to a category (e.g., based on information from a user classifyingthe events, or based on a list of events for each category), and thenmay calculate the category of activity in the schedule that occupies thehighest percentage of the user's time for a given period of time such asan hour of the day. Thus, recommendation controller 152 may determinethat the early weekday hours are generally spent sleeping, while thelate hours of the night on weekdays are generally spent working.

In step 1506, recommendation controller 152 correlates the schedule witha set of behavioral patterns stored in memory 154. The behavioralpatterns may indicate an ideal schedule, or a summarized version ofsuch. For example, a behavioral pattern may indicate that ideally 9am-10 am will be occupied by breakfast, or may indicate that 9 am-10 amshould statistically be breakfast 80% of the time, reading the news 10%of the time, and commuting 10% of the time. A behavioral pattern alsomay correlate individual periods of time with categories of eventsinstead of specific activities, making it easier to correlate the entireuniverse of potential human activity with a behavioral pattern.

Using this information from the behavioral patterns, recommendationcontroller 152 correlates the schedule with each of the behavioralpatterns (e.g., by comparing the activities in the schedule for eachhour, day, week to an idealized version indicated by each behavioralpattern), and assigns a score for each behavioral pattern. In oneembodiment, the score is determined by identifying, for each hour, anaverage fraction of time spent by the user doing various activities.Each fraction is added to the score if it matches the behavioral patternfor that time. Thus, in the hour from 11 am to 12 pm, if a user visitsthe gym 80% of the time (e.g., four out of five days) and reads 20% ofthe time, and if the behavioral pattern indicates fitness and networkingfor that weekday hour, then the score for the user's fitness activitiesfor that hour may be calculated as follows. For the gym, the score is0.8 because it matches a listed category in the behavioral pattern.Meanwhile, reading provides a score of zero because it does not match alisted category for that weekday hour for that behavioral pattern. Instep 1508, recommendation controller 152 selects the behavioral patternwith the highest correlation/score for the schedule of events, and setsthe expected personality type of the user to that behavioral pattern.

In a further embodiment, controller 152 may provide a set of intakequestions to each user in order to identify a personalitytype/behavioral pattern for that user. These questions may relate tocommon activities performed by the user, when the activities areperformed by the user, general feelings or outlooks held by the user,etc. This information may be useful in identifying or further clarifyinga behavioral pattern/personality type to associate with the user.

In a further embodiment, controller 152 may compare a user's scheduledactivities for a day against the activities that were actually performedby the user during that day (e.g., as reported by GPS information, userinput, email sources, etc.). Controller 152 may use the correlationtechniques described above for behavioral patterns in order to determinewhether discrepancies exist between scheduled and performed activities(e.g., for specific types of events, for events at certain times of day,for events occurring on certain days, etc.). Controller 152 may thengenerate recommendations or observations based on these determinations.

Recommendation System Examples

The following examples illustrate interactions of arecommendation/scheduling system with different exemplary users of therecommendation system. In these examples, the first exemplary user isnamed Joe. Joe is a mid-level commercial real estate broker that islooking to shift his business into real estate development. Joedownloads instructions for an application into his phone, turning thephone into a scheduling/recommendation system (i.e., the processor ofthe phone, in combination with the instructions stored in memory,operates as a recommendation engine and scheduling system. Thus,references to “the application” refer to the processor of the phoneimplementing instructions, and may refer to operations of the schedulingsystem, the recommendation system, and/or various components thereof.

On activating the application, the application walks Joe through aregistration process, where Joe may provide credentials and contactinformation for retrieving data via various input channels includingemail accounts, calendars, wearable devices, etc. Joe also providescredentials for the application to remotely access his billing andaccounting software. The application then tracks Joe via the inputchannels and provides him with reports in real time of how he spends histime and/or money. The application also shows Joe how his actualschedule differs from his planned schedule, by comparing input channelsindicating actual activities (e.g., GPS location input) against inputchannels indicating scheduled activities (e.g., a calendar).

Next, the application compares Joe's schedule to an ideal behavioralpattern labeled “commercial real estate developer” that is maintained inmemory. The ideal behavioral pattern is pulled from anInternet-accessible library of schedules maintained on a serveraccessible to the application. Through an ongoing comparative analysis,the application provides feedback and makes suggestions to Joe on how hemay improve his schedule so that he will get closer to his goals.

The application is also associated with a website through which Joe mayconfigure his account. In this example, Joe may create his account forthe application by providing an email address and password on thewebsite itself. These login credentials enable Joe to sign into theapplication and website. During the initial sign up process, Joe answersa questionnaire about why he is signing up for an account. Theapplication (or website) provides Joe questions about how he likes tospend his time, how he defines success, how he would like to improve hissuccess and in what time frame. The application also asks Joe to fillhis calendar as accurately as possible for the next week. Theapplication then uses an intelligent survey tool that responds withquestions depending on how the previous question was answered (e.g., viaa flowchart style logic structure). In this manner, the applicationlearn as much as possible about Joe while requiring a minimal amount oftime. Based on responses to the questions, the recommendation controllercategorizes Joe into a user type, and defines success metrics for Joe.

Joe provides the application with credentials to his email account, hisFitbit tracker and his Gmail calendar. The application then creates twotime maps for Joe. The first time map corresponds with his plannedschedule, and the second time map corresponds with his actual schedule.The planned schedule is pulled from his existing calendar. The actualschedule of how Joe spends his time is determined by assemblinginformation from email (e.g., what time emails are sent, the length ofthe emails, who the emails are sent to, and the content of the emails),calendars (e.g., the when, where, and who of scheduled events), GPStracking of movements from his phone, text messages (e.g., who he sendsmessages to, what the contents of the messages are, and when they aresent), billing and accounting software (e.g., who Joe's clients are, howmuch each one of them has paid him over time, what Joe's billable hoursare for each client), and other sources. GPS tracking information may beacquired by, for example, Joe enabling the application to utilizelocation tracking and services on the phone. The application may thenuse location information to correlate activates with certain locations.This may help to provide information indicating activities performed byJoe if there is no explicit event listed on the calendar. Theapplication assembles the information from these sources into a databasestored on Joe's phone and/or an Internet accessible server. Theapplication also dynamically determines when new database entries werecreated with respect to the current time, and applies a name to eachentry in the database. The application also assigns a layer to eachactivity, based on a name of the activity, time of the activity, and/orlocation of the activity.

Joe then goes about his daily routine. The application therefore causesno disruption to Joe's daily schedule other than occupying backgroundprocessing resources of Joe's phone. Joe may occasionally receive pushmessages from the application with questions about his daily activities,physical energy levels, and emotional state. Based on these responsesand contextual information (e.g., location), when the applicationdetects unknown/unclassified periods of time in Joe's schedule, itdetermines a set of probable activities that Joe is engaged in, and bypush notification, asks Joe directly to respond by confirming and/orselecting one of the probable activities. These push notifications maybe multiple choice, fill in the blank, etc.

The application may then compile reports based on Joe's activities. Forexample, the application may generate a push notification for Joe afterone week, providing a report about how his time is spent. Theapplication generates the report as a helical infographic illustratinghow Joe spent his time during the week. In this example, the helicalstructure is created by mapping data to a digitally generated 3D helixof time using cylindrical coordinates. Joe clicks through preset viewsprovided by the application that allow him to view the 3D helix atvarying levels of magnification. In this example, the applicationpresents preset views showing Joe's behavioral patterns via hourly,daily, weekly, yearly and multi-year views.

Specific layers or sections of time are isolated and presented forviewing via the application in a fashion similar to an “explodedaxonometric” view. The application enables Joe to create custom views ofthe 3D helix, by panning, zooming, changing the visibility of layers orelements of the map (e.g., on/off, solid, wireframe), etc. Theapplication also enables Joe to view specific layers and/or sections oftime as desired.

The 3D helix shows the difference between how Joe plans his time, andhow he actually spends his time, by presenting these behavioral patternson different layers. In its default setting, the application directs adisplay of Joe's phone to update the 3D helix in real time. Thus, theapplication actively pulls in data for current activities and infillsthe 3D helix in real time. The 3D helix may be presented to any suitableuser that Joe grants access to, and may be presented via either thewebsite or the mobile application.

The application also makes various recommendations to Joe based on hispatterns of behavior, in the form of recommendation reports that areindicated via push notifications. For example, a recommendation reportmay be generated after a threshold period of time (e.g., one week, twoweeks, one month) has passed, and may be provided directly via theapplication or via email in a Portable Document File (PDF) format. Eachreport may further indicate how future activities of the user areexpected to occur if no adjustments are made, by extrapolating theuser's short and mid-term habits over a longer time period, and mappingthe extrapolated data onto the 3D helix. The report generated by theapplication may further indicate the behavioral pattern that the user'sschedule is most highly correlated with.

After analyzing Joe's actual schedule, the application categorizes Joein to a user type. The report then shows him how his user type differsfrom his ideal behavioral pattern, which Joe indicated in his initialregistration process. The application also generates recommendations bycomparing the data from Joe's schedule against his ideal/targetbehavioral pattern. The application then recommends how to eliminate thedifferences between Joe's actual and ideal schedules by suggesting thatJoe spend different amounts of time on different activities in hisschedule. The application may further recommend starting new activitiesand/or stopping certain activities entirely.

Joe grants the application permission to take over his schedule, and theapplication prepopulates Joe's calendar with events dedicated toactivities that match with the target behavioral pattern. Included inthe new calendar are activities for market research, new businessdevelopment, exercise, and rest. The application then pushes the newcalendar to Joe's email account. Upon logging in, Joe can revise thespecific times and locations for each of the new activities. Joe mayfurther adjust the new calendar as desired to deviate from the newschedule generated by the application.

The application supervises Joe's calendar entries and his actualactivities, and continually pushes notifications to Joe in real timebased on his current behavior and goals. For example, when Joe deviatesfrom the planned events, the application provides positiverecommendations asking him to consider changing his schedule to be moreeffective. These nudges are determined by the application assigning apriority value to Joe's activities and contacts. For example, a nudgemay state “Why are you scheduling this meeting? You have no associatedbillable hours with this client,” or may state “You should be spendingmore time after work exercising and taking recovery time becausetomorrow is a big day.” The application also identifies incoming meetingrequests from the calendar or email account, and responds to the meetingrequests with conditional responses based on rules defined by Joe. Forexample, the application may automatically accept or reject eventinvitations from specific users, based on the priority levels of thoseusers.

A user Sarah may also utilize an application on her phone to implement ascheduling/recommendation system. In this example, Sarah is dentalhygienist who has a four year old in preschool and is interested inbecoming more grounded and living a balanced life. She has a regular 10am to 4 pm schedule and is free on weekends. Sarah shares her calendarwith her husband, and but is not heavily involved in technology.

During sign up, Sarah provides credentials for her email account. Shealso installs the application on her phone. The application then tracksSarah and provides her with reports in real time indicating how shespends her time. Since Sarah doesn't use her electronic calendar systemsregularly, the application regularly asks her, via emails and pushnotifications, how she has been spending her time. The applicationdetermines an amount of push messages to ask Sarah how she spent hertime in a given period, based on how densely populated Sarah's digitalcalendar for her email account is for that period.

Sarah also sets up tiered levels of access for others to view variousaspects of her schedule on her account. For example, Sarah grants herhusband's user account full access to view and modify her schedule, butgrants a babysitter only access to view the portions of her schedulethat occur during weekday evenings. The application then shares Sarah'sschedule with her husband so they can plan activities for their son.

The application also determines, based on Sarah's responses to aninteractive questionnaire, that Sarah desires a more balanced schedule.The application instructs Sarah to fill out a calendar with informationdescribing her activities, and then assembles two time maps for Sarah,corresponding to a target schedule and an actual schedule. In thisexample, the application uses metrics and guidelines established by lifecoaches and time management experts to generate an ideal/target scheduleand formulate recommendations to Sarah for changing her schedule. Thus,through continuous comparative analysis, the application providessuggestions for Sarah and her husband indicating how she can live a morebalanced life.

Sarah's actual schedule is determined by pulling information in asimilar manner as described above for Joe, and storing the informationin a database on Sarah's phone or on an Internet server for theapplication. The application then tracks Sarah's actual schedule andprovides push messages in a similar manner as described for Joe. Theapplication also provides infographics in a similar manner as describedfor Joe above. Furthermore, the application generates recommendationreports in a similar manner as described above for Joe, except thatSarah's actual schedule is compared against a behavioral pattern for abalanced lifestyle. Furthermore, in this example, the applicationdedicates blocks of Sarah's time to activities associated with thebalanced lifestyle behavioral pattern. Thus, activities are scheduledfor meditation, yoga, family time, and rest.

In a third example, Tyler utilizes a scheduling/recommendation system tomanage one or more projects for work. Tyler is a project manager at ademolition firm. He is responsible for setting the schedule for five ofhis employees. In this example, Tyler utilizes the application toorganize multiple demolition projects, by generating a shared project inthe application for each demolition project, and providing permissionsto his employees to view and edit scheduled events for those scheduledprojects. Each shared project may be stored on Tyler's phone, hiscomputer, or via a shared network server. The shared project may alsoinclude each employee's schedule as a layer, and free time may bequickly identified by viewing the layers together at once on a single 3Dhelix.

To initially generate a shared project, Tyler answers a questionnaireprovided by an instance of the application, and selects a project modelthat he wants to follow for the demolition of a defunct reservoir dam.He also sets a projected completion time. Information Technology (IT)support personnel provide Tyler's application with login credentials foreach team member's email account and calendar. Then, the applicationcreates two time maps for the shared project, which correspond to aplanned project schedule and an actual project schedule. The plannedschedule is pulled from the scheduled project calendar, while the“actual” schedule of how Tyler's team spends their time is determined byassembling information from the same sources as discussed above for Joeand Sarah. Further data may be provided via project management software(e.g., what the time line for the project is, whether the project is onschedule, delays, costs, additional fees, who is involved, etc.) andintegrated into a centralized or distributed database.

The shared project schedule may be populated and Tyler's team membersmay be tracked in a similar manner to that described for Joe above. Inthis embodiment, each application may generate unique questions for eachof Tyler's team members to identify the activities being currentlyperformed by each team member. In this example, the application furthersupports team reminders and scheduled updates sent between team members,as well as an input system where team members can “check off” tasks ascomplete and the application populates this information to the projectcalendar.

In this example, Tyler establishes milestones and completion dates foreach shared project, and provides his application access credential fortracking his employees' locations and/or emails. The application thentracks the phones of the team members and analyzes each team member'spersonal calendar. The application compares the activities of the teamas a whole against a predefined ideal schedule of activities (e.g., aspopulated by Tyler or as generated based on ideal team dynamics). Theapplication further provides reports and recommendations to Tylerindicating how to hit deliverable dates, by identifying one or moreactivities that are required for a project milestone but that have notoccurred yet, and recommending immediate implementation of thoseactivities. The application may further detect changes and delays to theschedule based on information in emails between team members and basedon individual schedules. These updates may then be distributed via anInternet server to each user's application on their own phone.

The application makes an ongoing analysis of the team's progress, andtransmits reports to a selected group of users (e.g., Tyler, hissuperiors, etc.) indicating discrepancies from the schedule. Theapplication may further generate an individualized set of recommendationreports for the users of the project, and may present each user'scalendar as a 3D helix, as well as present each user's calendar as alayer of a shared 3D helix representing the project schedule.Representation and updating of the 3D helix may be performed in asimilar manner as described above for Joe. Recommendation reports may beprovided by the application via email, and the application may enableTyler to annotate recommendation reports before forwarding the reportsto his team by enabling them to view the reports in their ownapplications. The recommendation reports may include content similar tothat described for Joe, and be updated in a similar manner as describedfor Joe above.

The application may then populate Tyler's team's calendars with blockedout appointment blocks dedicated to certain activities in keeping withthe ideal schedule. The activities include meeting times for otherprojects, team meetings, and rest. Thus, each team member may log intotheir own instance of the application to identify their new tasks, andrelocate or modify these tasks as needed. Furthermore, each team membermay receive unique recommendations based on their own calendars (andcomparison of ideal versus actual calendars).

The application further generates weekly updates and transmits them toTyler to indicate the team's current progress compared against the idealproject schedule up to completion. Furthermore, after the project isover Tyler the application generates a complete report assessing theactual project schedule as compared with the ideal schedule. At the endof the project, an analysis is sent to the selected group of users withrecommendations on how to make improvements. For example, theapplication may detect that one user has been consistently off-schedule,and suggest that the user be trained or reprimanded.

In this example, in addition phone-based applications, each projectmember uses a desktop instance of the application as well. The variousapplications coordinate their activities and schedules via a centralserver. Also, in this example, each user is associated with an accesslevel. Therefore, Tyler is granted full access to view and modify allschedules for the project, while team members may be granted morelimited permissions by Tyler as desired.

Embodiments disclosed herein can take the form of software, hardware,firmware, or various combinations thereof. In one particular embodiment,software is used to direct a processing system of scheduling system 110and/or recommendation system 150 to perform the various operationsdisclosed herein. FIG. 16 illustrates an exemplary processing system1600 operable to execute a computer readable medium embodying programmedinstructions. Processing system 1600 is operable to perform the aboveoperations by executing programmed instructions tangibly embodied oncomputer readable storage medium 1612. In this regard, embodiments ofthe invention can take the form of a computer program accessible viacomputer readable medium 1612 providing program code for use by acomputer (e.g., processing system 1600) or any other instructionexecution system. For the purposes of this description, computerreadable storage medium 1612 can be anything that can contain or storethe program for use by the computer (e.g., processing system 1600).

Computer readable storage medium 1612 can be an electronic, magnetic,optical, electromagnetic, infrared, or semiconductor device. Examples ofcomputer readable storage medium 1612 include a solid state memory, amagnetic tape, a removable computer diskette, a random access memory(RAM), a read-only memory (ROM), a rigid magnetic disk, and an opticaldisk. Current examples of optical disks include compact disk-read onlymemory (CD-ROM), compact disk-read/write (CD-R/W), and DVD.

Processing system 1600, being used for storing and/or executing theprogram code, includes at least one processor 1602 coupled to programand data memory 1604 through a system bus 1650. Program and data memory1604 can include local memory employed during actual execution of theprogram code, bulk storage, and cache memories that provide temporarystorage of at least some program code and/or data in order to reduce thenumber of times the code and/or data are retrieved from bulk storageduring execution.

Input/output or I/O devices 1606 (including but not limited tokeyboards, displays, pointing devices, etc.) can be coupled eitherdirectly or through intervening I/O controllers. Network adapterinterfaces 1608 can also be integrated with the system to enableprocessing system 1600 to become coupled to other data processingsystems or storage devices through intervening private or publicnetworks. Modems, cable modems, IBM Channel attachments, SCSI, FibreChannel, and Ethernet cards are just a few of the currently availabletypes of network or host interface adapters. Display device interface1610 can be integrated with the system to interface to one or moredisplay devices, such as printing systems and screens for presentationof data generated by processor 1602.

What is claimed is:
 1. A system comprising: an interface; and acontroller operable to acquire an input stream from input sources inreal time via the interface in accordance with an ApplicationProgramming Interface (API), the input stream indicating events that arebeing performed by the same individual in real time, and to generateentries in a database that describe the indicated events, each entryincluding a timestamp and input source name for a corresponding event,wherein the controller is further operable to assign a layer to eachevent based on location information corresponding with the timestamp forthat event, to create a retrospective timeline that represents events inthe database, wherein the retrospective timeline visually distinguishesbetween events that are assigned to different layers, and to update theretrospective timeline in memory in real time as the input stream isreceived.
 2. The system of claim 1, wherein: the input sources includeat least one input source selected from the group consisting of: asocial network for the individual, a call history of a mobile device ofthe individual, a text messaging history of the individual, an emailapplication for the individual, a calendar for the individual, and afitness band worn by the individual.
 3. The system of claim 1 wherein:the location information comprises Global Positioning System (GPS) dataindicating movements of a mobile device of the user, and the controlleris further operable to correlate GPS data with events in the inputstream to determine locations corresponding to the events.
 4. The systemof claim 1 wherein: the controller is further operable to classifyunknown events in the database by querying the user.
 5. The system ofclaim 1 wherein: each of the layers is associated with one of multiplecategories, and the categories comprise work, family, fitness,networking, and social.
 6. The system of claim 1 wherein: the controlleris further operable to accumulate multiple individual inputs from aninput source into a single overarching event.
 7. The system of claim 1wherein: the controller comprises a component of a mobile device.
 8. Amethod comprising: receiving an input stream from input sources in realtime via an interface in accordance with an Application ProgrammingInterface (API), the input stream indicating events that are beingperformed by the same individual in real time; generating entries in adatabase that describe the indicated events, each entry including atimestamp and input source name for a corresponding event; assigning alayer to each event based on location information corresponding with thetimestamp for that event; populating a retrospective timeline thatvisually represents events in the database wherein the retrospectivetimeline visually distinguishes between events that are assigned todifferent layers; and updating the retrospective timeline in memory inreal time as the input stream is received.
 9. The method of claim 8wherein: the input sources include at least one input source selectedfrom the group consisting of: a social network for the individual, acall history of a mobile device of the individual, a text messaginghistory of the individual, an email application for the individual, acalendar for the individual, and a fitness band worn by the individual.10. The method of claim 8 wherein: the location information comprisesGlobal Positioning System (GPS) data indicating movements of a mobiledevice of the user, and the method further comprises correlating GPSdata with events in the input stream to determine locationscorresponding to the events.
 11. The method of claim 8 furthercomprising: classifying unknown events in the database by querying theuser.
 12. The method of claim 8 wherein: each of the layers isassociated with one of multiple categories, and the categories comprisework, family, fitness, networking, and social.
 13. The method of claim 8further comprising: accumulating multiple individual inputs from aninput source into a single overarching event.
 14. The method of claim 8further comprising: presenting the retrospective timeline via a displayof a mobile device.
 15. A non-transitory computer readable mediumembodying programmed instructions which, when executed by a processor,are operable for performing a method comprising: receiving an inputstream from input sources in real time via an interface in accordancewith an Application Programming Interface (API), the input streamindicating events that are being performed by the same individual inreal time; generating entries in a database that describe the indicatedevents, each entry including a timestamp and input source name for acorresponding event; assigning a layer to each event based on locationinformation corresponding with the timestamp for that event; populatinga retrospective timeline that visually represents events in the databasewherein the retrospective timeline visually distinguishes between eventsthat are assigned to different layers; and updating the retrospectivetimeline in memory in real time as the input stream is received.
 16. Themedium of claim 15 wherein: the input sources include at least one inputsource selected from the group consisting of: a social network for theindividual, a call history of a mobile device of the individual, a textmessaging history of the individual, an email application for theindividual, a calendar for the individual, and a fitness band worn bythe individual.
 17. The medium of claim 15 wherein: the locationinformation comprises Global Positioning System (GPS) data indicatingmovements of a mobile device of the user, and the method furthercomprises correlating GPS data with events in the input stream todetermine locations corresponding to the events.
 18. The medium of claim15 wherein the method further comprises: classifying unknown events inthe database by querying the user.
 19. The medium of claim 15 wherein:each of the layers is associated with one of multiple categories, andthe categories comprise work, family, fitness, networking, and social.20. The medium of claim 15 wherein the method further comprises:accumulating multiple individual inputs from an input source into asingle overarching event.